// copyright jyz.2024


#include "AuraGameplayTags.h"
#include "GameplayTagsManager.h"
FAuraGameplayTags FAuraGameplayTags::g_GameplayTags;

void FAuraGameplayTags::InitializeNativeGameplayTags()
{
	InitAttributeSetGameplayTags();
	InitInputGameplayTags();
	InitDamageGameplayTags();
	InitEffectsGameplayTags();
}

void FAuraGameplayTags::InitAttributeSetGameplayTags()
{
	//至关重要的属性
	AS_Vital_Health = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Vital.Health"),
	FString("血量"));

	AS_Vital_Mana = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Vital.Mana"),
		TEXT("蓝量"));
	
	//Primary Attributes(主要的)
	AS_Primary_Strength = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Primary.Strength"),
	TEXT("力量"));

	AS_Primary_Intelligence = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Primary.Intelligence"),
		TEXT("智力"));

	AS_Primary_Resilience = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Primary.Resilience"),
	TEXT("恢复力"));

	AS_Primary_Vigor = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Primary.Vigor"),
	TEXT("活力"));


	
	//次要属性（依赖主要属性）--->Secondary Attributes
	AS_Sec_Armor = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.Armor"),
		TEXT("(护甲)减少受到的伤害，提高阻挡几率"));

	AS_Sec_ArmorPiercing = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.ArmorPiercing"),
		TEXT("穿甲伤害"));

	AS_Sec_BlockChance = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Secondary.BlockChance"),
	TEXT("格挡率"));

	AS_Sec_CriticalChance = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Secondary.CriticalChance"),
	TEXT("暴击率"));

	AS_Sec_CriticalDamage = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Secondary.CriticalDamage"),
	TEXT("暴击伤害"));

	AS_Sec_CriticalHitResistance = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Secondary.CriticalHitResistance"),
	TEXT("暴击抗性"));

	AS_Sec_HealthRegeneration = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Secondary.HealthRegeneration"),
	TEXT("每秒回血能力"));

	AS_Sec_ManaRegeneration = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Secondary.ManaRegeneration"),
	TEXT("每秒回蓝能力"));

	AS_Sec_MaxHealth = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Secondary.MaxHealth"),
	TEXT("最大生命值"));

	AS_Sec_MaxMana = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Attributes.Secondary.MaxMana"),
	TEXT("最大魔法值"));
	
}

void FAuraGameplayTags::InitInputGameplayTags()
{
	InputTag_LMB = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.LMB"),
	TEXT("鼠标左键按下"));

	InputTag_RMB = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.RMB"),
	TEXT("鼠标右键按下"));
	
	InputTag_MMB = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.MMB"),
	TEXT("鼠标中键按下"));

	InputTag_1 = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.1"),
	TEXT("数字键1"));

	InputTag_2 = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.2"),
	TEXT("数字键2"));

	InputTag_3 = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.3"),
	TEXT("数字键3"));

	InputTag_4 = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.4"),
	TEXT("数字键4"));
	
	InputTag_5 = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.5"),
	TEXT("数字键5"));

	InputTag_6 = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.6"),
	TEXT("数字键6"));
}

void FAuraGameplayTags::InitDamageGameplayTags()
{
	Damage = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Damage"),
	TEXT("Damage"));
}

void FAuraGameplayTags::InitEffectsGameplayTags()
{
	Effects_HitReact = UGameplayTagsManager::Get().AddNativeGameplayTag(
    	FName("Effects.HitReact"),
    	TEXT("受击效果"));
}
